#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#include "temps.h"
#include"gestion_stock.h"


/*void saisir_produit(produit *p,int h)//saisie du produit en cas d'ajout/modification
{  
   
   printf("donner  le nom du produit\n");
   fflush(stdin);
   scanf("%s",p->nom);
   printf("donner l'id du prooduit\n");
   scanf("%d",&p->id);
   printf("donner la contit à modifier (ajou/supp)\n");
   scanf("%d",&p->cont);
  
   p->last=h;
   p->h=heure();
   p->m=minute();
   p->s=sec();
    

  }*/



void ajout_produit(produit p,int h){/*fonction ajout/modification  */
FILE *stock;/*le fichier stock*/
FILE *stockt;/*le fichier temporel stockt*/
int he,m,s,choix;
   char *c;c=malloc(20*sizeof(char));
c=get_temps(c);
produit x;

int test=1,y;
//x=malloc(sizeof(produit));


	stock=fopen("stock.txt","r");
	stockt=fopen("stockt.txt","w");	
	if(stock!=NULL) 
		{ while ((fscanf(stock,"%s %d %d %d %s",x.nom,&x.id,&x.cont,&x.last,x.t)!=EOF)) {/*test fin du fichier*/
	     
	     	if  ((x.id==p.id)||((strcmp(x.nom,p.nom)==0)))/* si les produits du stock.txt different du produit à ajouter/modifier on les copie dans stockt.txt*/
             	{y=(p.cont)+(x.cont);/*s'il ya une correspondance totale entre l'ancien et le nouveau produit on addition 
										la quantité*/
			test=0;		    
			fprintf(stockt,"%s %d %d %d %s\n",x.nom,x.id,y,h,c);}
	                  
		
	           
			
				
              	else { fprintf(stockt,"%s %d %d %d %s\n",x.nom,x.id,x.cont,x.last,x.t);}        
	     }
           
            if ((fscanf(stock,"%s %d %d %d %s",x.nom,&x.id,&x.cont,&x.last,x.t)==EOF)&&(test==1))/*si le produit n'existe pas on l'ajout à 	stockt*/
               fprintf(stockt,"%s %d %d %d %s\n",p.nom,p.id,p.cont,h,c);
	}
	else{ printf("ERREUR fichier introuvalble\n");return;}

fclose(stock);
fclose(stockt);
remove("stock.txt");  /*on suppprime l'ancien fichier stock et on le remplace par stockt en changeant son nom par stock*/
rename("stockt.txt","stock.txt");}


void supprimer_produit(int id,int h)
{FILE *stock;
FILE *stockt;



int test=1;
produit *x;
 x=malloc(sizeof(produit));
 

stock=fopen("stock.txt","r+");
stockt=fopen("stockt.txt","w");


if(stock!=NULL) { /*test fin du fichier*/
	while ((fscanf(stock,"%s %d %d %d %s",x->nom,&x->id,&x->cont,&x->last,x->t)!=EOF)&&test==1) 
			{ 
	     if(x->id!=id){   /* recopier tout les produit sauf le produit ayant le meme id*/

             fprintf(stockt,"%s %d %d %d %s",x->nom,x->id,x->cont,x->last,x->t);
	     test=0;}
	         
}
if(test==1) printf("le produit  n'existe pas ou il se trouve avec un autre id\n");/*si test ==1 alors on a pas trouver ce produit*/
	else printf("le produit %s est supprimé avec succes \n",x->nom);}

else printf("ERREUR fichier introuvalble\n");

fclose(stock);
fclose(stockt);
remove("stock.txt");
rename("stockt.txt","stock.txt");}



produit afficher_stock(int n)
{ FILE *stock;
  produit x;
int i=0;
  //x=malloc(sizeof(produit));
  
stock=fopen("stock.txt","r");
if(stock!=NULL){

while (fscanf(stock,"%s %d %d %d %s",x.nom,&x.id,&x.cont,&x.last,x.t)!=EOF) {/*test fin du fichier et lecture du structure produit*/
     
	//printf("Nom du produit   %s \n id du produit %d  \n stock de %d paquet\nla derniere modification étais par la personne d'id %d\n à %d:%d:%d \n",x->nom,x->id,x->cont,x->last,x->h,x->m,x->s);				/*affichage*/
       i++; if(i==n) return x;
        //printf("\t-------------------------------------\n");
 }}
else printf("ERREUR fichier introuvalble");
fclose(stock);


}//*******************************
int modifier_produit(int id,int q,int id_personnel)
{FILE *stock;/*le fichier stock*/
FILE *stockt;/*le fichier temporel stockt*/
//int he,m,s,choix;
   char *c;c=malloc(20*sizeof(char));
c=get_temps(c);
produit x;

int y,result=0;
//x=malloc(sizeof(produit));


	stock=fopen("stock.txt","r");
	stockt=fopen("stockt.txt","w");	
	if(stock!=NULL) 
		{ while ((fscanf(stock,"%s %d %d %d %s",x.nom,&x.id,&x.cont,&x.last,x.t)!=EOF)) {/*test fin du fichier*/
	     
	     	if  (x.id==id)/* si les produits du stock.txt different du produit à ajouter/modifier on les copie dans stockt.txt*/
             	{y=(x.cont)+(q);/*s'il ya une correspondance totale entre l'ancien et le nouveau produit on addition la quantité*/
		fprintf(stockt,"%s %d %d %d %s\n",x.nom,x.id,y,id_personnel,c);	
		result=1;}
	                  
		
	           
			
				
              	else { fprintf(stockt,"%s %d %d %d %s\n",x.nom,x.id,x.cont,x.last,x.t);}        
	     }
           
            
	}
	else{ printf("ERREUR fichier introuvalble\n");return;}

fclose(stock);
fclose(stockt);
remove("stock.txt");  /*on suppprime l'ancien fichier stock et on le remplace par stockt en changeant son nom par stock*/
rename("stockt.txt","stock.txt");return result;}

//********************************
int nbr_produit(void)
{    FILE *f;
     int n=0,y,z;
     char x[5],w[20]; 
  f=fopen("stock.txt","r");
   if(f!=NULL) { while(fscanf(f,"%s %d %d %s",x,&y,&z,w)!=EOF) n++;}
   else printf("le fichier n'existe pas");
fclose(f);
return n;}

//***********************************************
int existe_produit(int id,char nom[5])
{ FILE *f;
  produit x;
int y=0;
f=fopen("stock.txt","r");
	if(f!=NULL)
	{
		while ((fscanf(f,"%s %d %d %d %s",x.nom,&x.id,&x.cont,&x.last,x.t)!=EOF)) 
			  {

			if((x.id==id)&&(strcmp(x.nom,nom)==0))       {y=1; return 1;} //1 ... nom et id correct
			else if ((x.id==id)&&(strcmp(x.nom,nom)!=0)) {return 2;y=1;}   //2 id existe nom faux
                        else if ((x.id!=id)&&(strcmp(x.nom,nom)==0)) {return 3;y=1;}  //3 nom existe avec un autre id
                          }
         }
  else printf("le fichier n'existe pas");
  

fclose(f);
return y;}
//**************************************************
produit afficher_produit(int pa,char chemin[])
{ 

	FILE *stock;
	  produit x,p;
	  //x=malloc(sizeof(produit));
	    

	int y=0;

	stock=fopen(chemin,"r");
	if(stock!=NULL)
	{
		while ((fscanf(stock,"%s %d %d %d %s",x.nom,&x.id,&x.cont,&x.last,x.t)!=EOF)&&y!=1) {

			/*test fin du fichier et lecture du structure produit*/
			if(x.id==pa){/*si le produit existe on l'affiche et on met y=1(test)*/
		      		y=1;
		   //  printf("Nom du produit   %s \n id du produit %d  \n stock de %d paquet\nla derniere modification étais par la personne d'id %d\n à %d:%d:%d \n",x->nom,x->id,x->cont,x->last,x->h,x->m,x->s); 
		       		 /*strcpy(p.nom,(*x).nom);
				 p.last=(*x).last;
				 p.h=(*x).h;
				 p.m=(*x).m;
				 p.s=(*x).s;
				 p.cont=x->cont;*/
			   	return x;
			   } 
	}
	} else{
		printf("\nImpossible d'ouvrir le fichier");
		return;
	}
		    // if (y==0) printf("ce produit n'existe pas");/*y=0 on n'a pas trouver ce prduit*/
	  //else{ strcpy(p.nom,"aaa");p.id=1;p.last=10002;p.h=01;p.m=02;p.s=03;p.cont=100; return p;}//printf("ERREUR fichier introuvalble");

		     
		     
	fclose(stock);		
	return p;

}
/*	    
int gestion_du_stock(int h)
{ produit *p,*p1;

  int choix,x,menu;
  char a[100];
 p=malloc(sizeof(produit));
 p1=malloc(sizeof(produit));
 


do {printf("****************MENU STOCK**************** \n\t1-ajouter/modifier un produit\n\t2-supprimer un produit\n\t3-afficher le stock\n\t4-afficher les info sur un produit\n\t5-retour\n\t0-sortir\n");
fflush(stdin);
scanf("%s",a);
choix=atoi(a);
switch (choix){
case 1:
{saisir_produit(p,h);
ajout_produit(p,h);}
break;
case 2 :

printf("donner l'id du produit à supprimer");
scanf("%d",&x);
supprimer_produit(x,h);
break;
case 3:
afficher_stock();
break;
case 4 :  saisir_produit(p,h);
         afficher_produit(p);
break;

case 5: return 1;

case 0: x=0;return 0; 
default: printf("\nmauvais choix");

	  	
} }
while (((choix!=0)||(strcmp(a,"0")!=0))||(x!=1) );//controle de saisie ****char/int

 return x;
 
}*/





		
